home *** CD-ROM | disk | FTP | other *** search
- package horst;
-
- import java.awt.Rectangle;
- import java.util.Vector;
-
- public class ViewLine {
- Vector vector = new Vector();
- // $FF: renamed from: x int
- int field_0;
- // $FF: renamed from: y int
- int field_1;
- int alignment = 0;
- int descent = 0;
- int lineWidth;
- int height;
- Rectangle bounds;
- int xOffset;
- int renderedWidth;
- int savedTargetWidth;
- View parent;
-
- ViewLine() {
- }
-
- void addView(View v) {
- this.vector.addElement(v);
- }
-
- void alignmentAdjust() {
- if (this.alignment == 1) {
- int availSpace = this.savedTargetWidth - this.renderedWidth;
- if (availSpace > 0) {
- this.move(availSpace / 2, 0, true);
- }
-
- this.bounds.width = this.savedTargetWidth;
- } else if (this.alignment == 2) {
- int availSpace = this.savedTargetWidth - this.renderedWidth;
- if (availSpace > 0) {
- this.move(availSpace, 0, true);
- }
-
- this.bounds.width = this.savedTargetWidth;
- }
-
- }
-
- int findNBSPBreak() {
- int sz = this.vector.size();
-
- for(int i = sz - 1; i >= 0; --i) {
- View v = (View)this.vector.elementAt(i);
- if (v.getElementType() == 101) {
- int idx = i - 2;
- if (idx < 0) {
- break;
- }
-
- View potentialView = (View)this.vector.elementAt(idx);
- if (potentialView.getElementType() != 101) {
- return idx;
- }
- }
- }
-
- return -1;
- }
-
- View getLastView() {
- int sz = this.vector.size();
- return sz > 0 ? (View)this.vector.elementAt(sz - 1) : null;
- }
-
- int getLastView(int type) {
- int sz = this.vector.size();
-
- for(int i = sz - 1; i >= 0; --i) {
- View v = (View)this.vector.elementAt(i);
- if (v.getElementType() == 101) {
- return i;
- }
- }
-
- return -1;
- }
-
- View[] getViews() {
- View[] data = new View[this.vector.size()];
- this.vector.copyInto(data);
- return data;
- }
-
- boolean isEmpty() {
- return this.vector.size() == 0;
- }
-
- Rectangle layout(int parentWidth, int targetWidth, LayoutInfo info) {
- int xPos = this.field_0;
- int yPos = this.field_1;
- int rowHeight = 0;
- this.renderedWidth = 0;
- this.savedTargetWidth = targetWidth;
- int maxDescent = 0;
- int maxAboveBaseline = 0;
- View[] views = this.getViews();
- int nViews = views.length;
- int marginEnd = this.field_0 + info.leftMargin;
- this.xOffset = 0;
- if (views.length == 1 && views[0] instanceof BRView) {
- int width = 0;
- this.height = ((BRView)views[0]).getBreakHeight();
- this.bounds = new Rectangle(this.field_0, this.field_1, width, rowHeight);
- views[0].layout(this.field_0, this.field_1, width, info);
- return this.bounds;
- } else {
- for(int i = 0; i < views.length; ++i) {
- View v = views[i];
- Rectangle bounds = null;
- boolean bContainerView = v.isContainerView();
- if (!v.isWrappable() && xPos < marginEnd) {
- this.xOffset = marginEnd;
- xPos = this.xOffset;
- this.field_0 = xPos;
- }
-
- bounds = v.layout(xPos, yPos, parentWidth, info);
- xPos += bounds.width;
- this.renderedWidth += bounds.width;
- maxDescent = Math.max(maxDescent, v.getDescent());
- int aboveBaseline = bounds.height;
- maxAboveBaseline = Math.max(maxAboveBaseline, aboveBaseline);
- }
-
- if (views.length > 1) {
- for(int i = 0; i < views.length; ++i) {
- View v = views[i];
- int yAdjustment = maxAboveBaseline - v.getBounds().height;
- if (yAdjustment > 0) {
- v.move(0, yAdjustment, true);
- }
- }
- }
-
- if (info.bPaginate) {
- boolean bPageAdjustmentOccurred = false;
-
- for(int i = 0; i < views.length; ++i) {
- if (!views[i].isContainerView() && views[i].m_bounds.intersects(info.pageBreak)) {
- int yOffset = info.pageBreak.y + info.pageBreak.height - views[i].m_bounds.y;
- if (yOffset > 0 && views[i].getMinimumSpan(0) <= info.pageHeight) {
- views[i].move(0, yOffset, false);
- bPageAdjustmentOccurred = true;
- }
- }
- }
-
- if (!bPageAdjustmentOccurred) {
- this.height = maxAboveBaseline + maxDescent;
- } else {
- int topX = this.field_0;
- int topY = this.field_1;
- int lineWidth = this.renderedWidth;
- int biggestY = this.field_1;
-
- for(int i = 0; i < views.length; ++i) {
- biggestY = Math.max(biggestY, views[i].m_bounds.y + views[i].m_bounds.height);
- }
-
- this.height = biggestY - topY;
- }
-
- info.setPageBreak(this.field_1 + this.height);
- } else {
- this.height = maxAboveBaseline + maxDescent;
- }
-
- this.descent = 0;
- this.bounds = new Rectangle(this.field_0, this.field_1, this.renderedWidth, this.height);
- info.setPageBreak(this.field_1 + this.height);
- return this.bounds;
- }
- }
-
- void move(int x, int y, boolean bMoveFloaters) {
- View[] views = this.getViews();
-
- for(int i = 0; i < views.length; ++i) {
- views[i].move(x, y, bMoveFloaters);
- }
-
- Rectangle var10000 = this.bounds;
- var10000.x += x;
- var10000 = this.bounds;
- var10000.y += y;
- }
-
- int pageBreakAdjust(LayoutInfo info) {
- Rectangle origBounds = new Rectangle(this.bounds);
- info.setPageBreak(origBounds.y);
- View[] views = this.getViews();
-
- for(int i = 0; i < views.length; ++i) {
- if (!views[i].isContainerView()) {
- if (views[i].m_bounds.intersects(info.pageBreak)) {
- int yOffset = info.pageBreak.y + info.pageBreak.height - views[i].m_bounds.y;
- if (yOffset > 0 && views[i].getMinimumSpan(0) <= info.pageHeight) {
- views[i].move(0, yOffset, false);
- }
- }
- } else {
- views[i].pageBreakAdjust(info);
- }
- }
-
- int biggestY = origBounds.y;
-
- for(int i = 0; i < views.length; ++i) {
- biggestY = Math.max(biggestY, views[i].m_bounds.y + views[i].m_bounds.height);
- }
-
- this.height = biggestY - origBounds.y;
- this.bounds.setBounds(origBounds.x, origBounds.y, origBounds.width, this.height);
- return Math.max(0, this.bounds.height - origBounds.height);
- }
-
- View removeLastView() {
- View v = (View)this.vector.elementAt(this.vector.size() - 1);
- this.vector.removeElementAt(this.vector.size() - 1);
- return v;
- }
-
- View removeView(int idx) {
- View v = (View)this.vector.elementAt(idx);
- this.vector.removeElementAt(idx);
- return v;
- }
- }
-